/*
 * @Description: 
 * @Author: Sun
 * @Date: 2024-07-10 23:24:45
 * @LastEditors: Sun
 * @LastEditTime: 2024-07-18 09:26:41
 */
import { fileURLToPath, URL } from 'node:url'

import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
//引入svg需要用到插件
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
//mock插件提供方法
import { viteMockServe } from 'vite-plugin-mock'

function resolve(dir) {
  return path.join(__dirname, dir)
}

export default defineConfig(({ command, mode }) => {
  //获取各种环境下的对应的变量
  let env = loadEnv(mode, process.cwd());
  return {
    // publicPath: 'https://gitee.com/jch1011/guiguzhenxuan',
    plugins: [vue(),
    createSvgIconsPlugin({
      iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
      symbolId: 'icon-[dir]-[name]',
    }),

    viteMockServe({
      localEnabled: command === 'serve',//保证开发阶段可以使用mock接口
    })
    ],
    chainWebpack: (config) => {
      // 配置 svg-sprite-loader
      config.module
        .rule("svg")
        .exclude.add(resolve("src/assets/icons"))
        .end();
      config.module
        .rule("icons")
        .test(/\.svg$/)
        .include.add(resolve("src/assets/icons"))
        .end()
        .use("svg-sprite-loader")
        .loader("svg-sprite-loader")
        .options({
          symbolId: 'icon-[dir]-[name]',
        })
        .end();
    },
    // chainWebpack: config => {
    //   //svg 配置
    //   config.module.rules.delete("svg"); //重点：删除默认配置中处理 svg
    //   config.module.rule('svg-sprite-loader').test(/\.svg$/)
    //     .include
    //     .add(path.resolve('src/assets/icons')) //处理 svg 保存路径
    //     .end()
    //     .use('svg-sprite-loader')
    //     .loader('svg-sprite-loader')
    //     .options({
    //       symbolId: 'icon-[dir]-[name]'  //给 symbo 配置 id
    //     })
    // },
    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url))
        // "@": path.resolve("./src") // 相对路径别名配置，使用 @ 代替 src
      }
    },
    //scss全局变量一个配置
    css: {
      preprocessorOptions: {
        scss: {
          javascriptEnabled: true,
          additionalData: '@import "./src/styles/variable.scss";',
        },
      },
    },
    //代理跨域
    server: {
      proxy: {
        [env.VITE_APP_BASE_API]: {
          //获取数据的服务器地址设置
          target: env.VITE_SERVE,
          //需要代理跨域
          changeOrigin: true,
          //路径重写
          rewrite: (path) => path.replace(/^\/api/, ''),
        }
      }
    }
  }
})


// https://vitejs.dev/config/
// export default defineConfig({
//   plugins: [
//     vue(),
//     createSvgIconsPlugin({
//       // Specify the icon folder to be cached
//       iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
//       // Specify symbolId format
//       symbolId: 'icon-[dir]-[name]'
//     }),
//     viteMockServe({
//       localEnabled: command === 'serve',//保证开发阶段可以使用mock接口
//     })
//   ],
//   resolve: {
//     alias: {
//       '@': fileURLToPath(new URL('./src', import.meta.url))
//     }
//   },
//   //scss全局变量一个配置
//   css: {
//     preprocessorOptions: {
//       scss: {
//         javascriptEnabled: true,
//         additionalData: '@import "./src/styles/variable.scss";',
//       },
//     }
//   },
// })
